﻿using System;
using PerfilEmpreendedor.Dao.Interfaces;
using PerfilEmpreendedor.Dao.Implements;

namespace PerfilEmpreendedor.Dao.Factory
{
    //Singleton
    public class DaoFactory
    {
        private DaoFactory()
        {
        }
        private static readonly DaoFactory daoFactory;

        public static DaoFactory GetInstance
        {
            get
            {
                if (daoFactory != null)
                {
                    return daoFactory;
                }
                else
                {
                    return new DaoFactory();
                }
            }
        }
        public IUsuarioDao GetUsuarioDao
        {
            get
            {
                return new UsuarioDao();
            }
        }

        public IPerfilDao GetPerfilDao
        {
            get
            {
                return new PerfilDao();
            }
        }

        public IHistoricoDao GetHistoricoDao
        {
            get
            {
                return new HistoricoDao();
            }
        }

        public IDicaDao GetDicaDao
        {
            get
            {
                return new DicaDao();
            }
        }

        public ITipoCartelaDao GetTipoCartelaDao
        {
            get
            {
                return new TipoCartelaDao();
            }
        }

        public INivelDao GetNivelDao
        {
            get
            {
                return new NivelDao();
            }
        }

        public ICartelaDao GetCartelaDao
        {
            get
            {
                return new CartelaDao();
            }
        }

        public IPartidaDao GetPartidaDao
        {
            get
            {
                return new PartidaDao();
            }
        }

        public IPartidaUsuarioDao GetPartidaUsuarioDao
        {
            get
            {
                return new PartidaUsuarioDao();
            }
        }

        public IAcaoDao GetAcaoDao
        {
            get
            {
                return new AcaoDao();
            }
        }
    }
}
